package cn.maxwell.FeiClient;

import cn.maxwell.HysTrixFactory.ProductFeignClientFallbackFactory;
import cn.maxwell.domain.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 主配置类增加@EnableFeignClients标签 , 其value属性可以指定Feign的客户端接口的包,当然也可以省略value属性
 * 此注解会在服务启动时被你在启动类中加的@EnableFeignClients扫描，
 * 				他会去找他自己同级以及一下所有加了@FeignClient("user-server")的接口，找到之后会使用动态代理
 * 				创建接口的实现类，实现类中他会根据接口的请求路径+方法的请求方式、参数、返回值、请求路径，合在一起
 * 				使用RestTemplate+Ribbon帮我们进行调用
 */
//启动即加载
@RequestMapping("/product")
@FeignClient(value = "product-server",fallbackFactory = ProductFeignClientFallbackFactory.class)
        public interface ProductFeiGinClient {
    @GetMapping("/loadById/{id}")
    Product loadById(@PathVariable("id") Long id);
}
